package edu.cuit.avatar;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TransStreamTest {
	public static void main(String[] args) {
//		//使用字节流处理文本文件需要自己编码/解码
//		try(var input = new BufferedInputStream(new FileInputStream("peppa.txt"))){
//            int i1 = input.read();
//            int i2 = input.read();
//
//            //UTF-8字符编码:一个汉字占用三个字节, GBK:UTF-8字符编码:一个汉字占用两个字节
//            System.out.println(new String(new byte[]{(byte)i1, (byte)i2}, "gbk"));
//            System.out.println("小猪peppa");
//        } catch (IOException e){
//            e.printStackTrace();
//        }	
		
		trans();
	}
	
	public static void test() {
		//使用字节流处理文本文件需要自己编码/解码
		try(var input = new BufferedReader(new FileReader("peppa.txt"))){
            //字符流建立在字节流上的一层抽象:内部自动完成编码/解码====>当前系统的编码系统
			System.out.println((char)input.read());
		
            
        } catch (IOException e){
            e.printStackTrace();
        }	
	}
	
	
	/**
	 * 转换流
	 * 处理字节InputStream转换成处理字符的Reader: InputStreamReader
	 * 处理字节OutputStream转换成处理字符的Writer: OutputStreamWriter
	 * 
	 * 1.连接字节流和字符流的桥梁作用
	 * 2.可以指定字符编码,解决乱码问题
	 * 3.高效的读写:与缓冲流配合
	 */
	public static void trans() {
		try(var input = new BufferedReader(new InputStreamReader(new FileInputStream("peppa.txt"),"gbk"))){
			System.out.println(input.readLine());
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}
